keras 소스분석 - predict.py 발표용
2017년 12월 25일 월요일
오전 1:51
소스: git clone https://github.com/DeepLearningSandbox/DeepLearningSandbox
1) 학습된 .model 파일을 가져다가
2) 입력 이미지에 대한
예측을 하게 하는 소스이다.
|
1) 이미지의 경로나 url 을
파라미터로 받고 2) 사용할 model 파일명을
파라미터로 받는다 - 이미지 경로와 url 둘 다 없으면 에러처리하고
나간다 1) load_model() 함수로 모델을 로딩한다음 2) 이미지를 열고, 예측한다 3) matplotlib 을 이용해서 예측 결과를 그려준다 |
|
실제로 예측하는 함수 1) 인셉션 v3 모델은
입력 해상도가 229x229 이다. - img.resize() 함수를 통해 변경해줌 2) train 시에는 generator 함수가
알아서 해주던 전처리를 해준다 - 이미지를 배열로
바꿔주고 - 배열의 차원을 변경해주고 - 전처리를 해준다음
- model.predict 를 해준다. 아마도 최종 output을
내보내줄듯 3) 그 결과를 리턴 |
|
이건 그려주는 부분 |
- VM에서 GUI 환경이나 브라우저를 띄우는건 어떻게 하지?
- 그게 안되니 그냥 실행하면 matplotlib 쓰는 부분에서 동작안한다
- Jupyter notebook을 쓰면 바로 볼 수는 있겠다.
- pip3 install jupyter 로 설치하고
- jupyter notebook 으로 실행
jupyter notebook 이라고 실행하면 No web browser found: could not locate runnable browser. Copy/paste this URL into your browser when you connect for the first
time, to login with a token: http://localhost:8888/?token=7f5f486c90f3d9d938dd39da283f41b730c3906222f9d07b 위와 같이 나왔고, url 클릭하니 Error: No active Cloud Shell. You are currently logged in as hyunseokjeong1@gmail.com which does
not have an active Cloud Shell. Please start a Cloud Shell session, then
click the Web Preview button then select the port number from the displayed
menu to preview your application. 위 시키는데로 클라우드 셀로 하려해도 포트가 8888은 없음 |
|
GCP의 VPC network → Firewall rues 에서 tcp:8080, udp:8080 룰을
만들고 VM에 적용해봄 - 그래도 안됨 |
|
참고 링크: https://jeffdelaney.me/blog/running-jupyter-notebook-google-cloud-platform/
1. External IP가 static 이어야 한다. 아래와 같이
변경
2. 8080 포트로
들어오는 tcp 를 열어줘야 한다. 위 참고링크에 빠져있는
부분
- tag를 주고 원하는 VM에만 적용되게 할 수도 있지만 그냥 project 내의 모든 VM에 다 적용되도록 한다
- Create a firewall rule
참고.
- tcp:8080-8900 으로
해주면 jupyter notebook 서버를 계속 실행해도 무리 없겠다.
- jupyter notebook 은 --port로 지정한 포트가 이미 사용중이면 바로 다음 port 로 생성하기 때문
- jupyter notebook list
- 현재 동작하는 jupyter notebook server list가 쭈욱 나온다
- jupyter notebook을 실행한 ssh 창을 닫으면 jupyter
notebook 역시 종료된다
- 막으려면 screen 을 실행하거나 tmux를 실행한다음 jupyter notebook을 실행하면 된다.
- 예를들어) screen -U -S jupyter
3. jupyter notebook 실행
- 옵션을 넣어준다. jupyter notebook --ip=0.0.0.0 --port=8080 --no-browser &
- 그러면 포트번호, 토큰이 들어간 url이 생성된다
(아래 참고)
- 그리고 Static 한 External IP를 사용하여 브라우저에서 포트와
토큰을 포함하여 주소창에 넣고 실행하면 주피터 노트북이 실행된다
- 예를 들면) 104.196.240.74:8080/?token=f4d5838385232498eb91988950c6106b02f3bff35ed3ebf3
* --no-browser 옵션은
브라우저 실행하지 말라는 것
* 다 똑같고, 마지막 빨간 네모만큼만 바꿔주면 된다
Microsoft OneNote 2016에서 작성